一 . 概述

K-Means算法用于对各种数据进行聚类。

其中 k 代表具有的族类数

  1. 相似类型的书籍或作者
  2. 类似的电影
  3. 类似的音乐
  4. 类似兴趣的客户

二 . 工作原理

  1. 随机设置每个K分类点
  2. 将每个点分给每个最近的K分类点
  3. 移动K到分类的点的中心区域

三 . sklearn 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

from IPython import display

%matplotlib inline

plt.rcParams['figure.figsize'] = [16, 9]

# 生成聚族随机数据 其中1000个点 10个特征,10个中心点
data, y = make_blobs(n_samples=1000, n_features=10, centers=10, random_state=42)

# 预测最佳的点
socres = []
for i in range(1, 12):
kmeans = KMeans(i)
model = kmeans.fit(data)
socre = model.score(data)
socres.append(abs(socre))

x_plot_data = list(range(1, 12))
plt.plot(x_plot_data, socres)

# 3D可视化
kmeans2 = KMeans(10)
model2 = kmeans2.fit(data)
labels = model2.predict(data)

fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(data[:, 0], data[:, 1], data[:, 2], c=labels, cmap='tab10')